#ifndef Filter_h
#define Filter_h

BOOL OnGetFilterVersion
(
	const char * nativeFilename,
	Config_T ** configPtrPtr,
	HTTP_FILTER_VERSION * pVer
);

DWORD OnReadRawData
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC, 
	PHTTP_FILTER_RAW_DATA pRawData,
	DWORD dwNotifyType
);

DWORD OnPreProcHeaders
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC, 
	PHTTP_FILTER_PREPROC_HEADERS pPreProcHeaders,
	DWORD dwNotifyType
);

DWORD OnUrlMap
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC, 
	PHTTP_FILTER_URL_MAP pUrlMap,
	DWORD dwNotifyType
);

DWORD OnAuthentication
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC, 
	PHTTP_FILTER_AUTHENT pAuthEnt,
	DWORD dwNotifyType
);

DWORD OnAccessDenied
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC, 
	PHTTP_FILTER_ACCESS_DENIED pAccessDenied,
	DWORD dwNotifyType
);

DWORD OnAuthComplete
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC, 
	PHTTP_FILTER_AUTH_COMPLETE_INFO pAuthCompleteInfo,
	DWORD dwNotifyType
);

DWORD OnSendResponse
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC, 
	PHTTP_FILTER_SEND_RESPONSE pSendResponse,
	DWORD dwNotifyType
);

DWORD OnSendRawData
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC, 
	PHTTP_FILTER_RAW_DATA pRawData,
	DWORD dwNotifyType
);

DWORD OnEndOfRequest
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC,
	DWORD dwNotifyType
);

DWORD OnLog
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC, 
	PHTTP_FILTER_LOG pLog,
	DWORD dwNotifyType
);

DWORD OnEndOfNetSession
(
	Config_T * configPtr, 
	PHTTP_FILTER_CONTEXT pFC,
	DWORD dwNotifyType
);

BOOL OnTerminateFilter
(
	Config_T * configPtr
);

#endif